Reference is made below, in particular, to the optimization of real-time data transmission according to the IEEE 1394 standard (IEEE Std 1394-1995, Standard for a High-Performance Serial Bus) and its supplements (IEEE project P1394a, Draft Standard for a High-Performance Serial Bus (Supplement); IEEE project P1394b, Draft Standard for a High-Performance Serial Bus (Supplement)), without the method being limited to this application or this standard.
Standard IEEE 1394 defines a bus that implements the control and status register (CSR) architecture (ISO/IEC 13213:1994, Control and Status Register (CSR) Architecture for Microcomputer Buses). The serial bus based on the IEEE 1394b standard permits communication between nodes or subscribers via different physical media at speeds of 100 to 3,200 Mbps (Megabits per second).
An IEEE 1394 bus is a serial bus. It is used to transfer the data bits to be transmitted consecutively (serially).
Certain home electronics applications, such as digital cameras, video and audio recorders and TV sets, as well as traditional computer applications, such as tape drives, printers, scanners, and storage media, provide data connections based on the IEEE 1394 standard. The IEEE 1394 bus forms a basis for linking these two areas.
The IEEE 1394 link layer permits packet-oriented data transmission using both acknowledged and unacknowledged data packets.
In the case of acknowledged data transfers, packets including the transmitter and receiver addresses are transmitted. The receiver returns an acknowledgement packet to the transmitter after receiving the packet.
In the case of unacknowledged transfers, a transmission channel between the transmitter and receiver having a certain bandwidth is requested from the isochronous resource manager (IRM), and a unique channel ID is assigned to this channel. During data transmission, the transmitter sends data packets having the channel ID and the data, and the receiver accepts only packets having this channel ID.
Transmissions using unacknowledged packets enable data packets to be transmitted within a predetermined time window, while transfers using acknowledged packets permit secure delivery regardless of the amount of time required.
Data is transmitted in cycles. Within each cycle, an isochronous transmission phase is followed by an asynchronous transmission phase. Data packets are transmitted in each cycle. Related data packets, even those from multiple cycles, add up to form data streams.
In the case of the asynchronous type of data transmission, the data transmission may begin at any time. The size of the data packets may be fixed or variable.
Isochronous data transmission is a special type of asynchronous data transmission. In the case of this type, the transmission is guaranteed within a defined period of time.
According to IEEE 1394, acknowledged packets are always transmitted asynchronously and unacknowledged packets asynchronously or isochronously. In addition, the packets transmitted during the isochronous phase are always unacknowledged packets.
The data of the active isochronous channels (ICs) is transferred in the isochronous phase of a transmission according to IEEE 1394. The amount of data is determined by the real data volume present in the transmit buffers of the transmitter. For each channel, however, it should not exceed the data rate reserved in the IRM. This ensures that each device is able to exchange data without interruption. The isochronous phase should make up no more than 80% of the cycle in each case. The rest of the bandwidth that is not used by the isochronous phase is additionally available to the asynchronous phase.
In the asynchronous phase, all network nodes that want to send asynchronous data receive access to the bus. These nodes use special arbitration mechanisms to negotiate access to the bus. The asynchronous phase ends after a specified period of time, regardless of whether all interested nodes were able to transmit their asynchronous data.
Examples of unacknowledged packets transmitted during the asynchronous phase are global asynchronous stream packets (GASP), which are used for Internet Protocol (IP) data transfers via an IEEE 1394 bus (The Internet Task Force, “IPv4 over IEEE 1394”, Request for Comments (RFC) 2734).
In the case of a transmission of this type, each data packet is assigned a transmission mode based on the example of the IEEE 1394 standard—namely assignment of the isochronous transmission mode to the usual unacknowledged packets and the asynchronous transmission mode to the GASP and acknowledged packets—as well as a transmitter and one or more (e.g., broadcast) receivers.
Multimedia systems that offer on-demand services (such as radio over IP) must generate and transmit a separate data stream for each receiver. Because the isochronous capabilities of the IEEE 1394 bus make this possible only to a limited extent, packet-based methods may be implemented on an IP basis with the use of the User Datagram Protocol (UDP) and Transmission Control Protocol (TCP). Transmissions via the Real Time Protocol (RTP) or Real Time Streaming Protocol (RTSP) may be based thereon. There are numerous applications that use RTP or RTSP. If an IEEE 1394 bus is used for these data transmissions, TCP datagrams are transmitted as isochronous packets and UDP datagrams as GASP packets.
When other devices or applications connected to the IEEE 1394 bus exchange a large volume of asynchronous data, it is possible that not all GASP packets are transmitted, since bandwidth is not reserved for them.